其他
技术分享 | ARM下中标麒麟系统ky10使用Xtrabackup-8.0.25
内容提纲
一、需求背景
二、环境准备
2.1 检查系统架构及版本 2.2 下载源码包 2.3 配置CentOS 8的yum源
三、安装编译依赖
四、编译Percona Xtrabackup
五、在ARM下初始化安装MySQL
5.1 初始化 5.2 配置文件 5.3 启动MySQL
六、登录并使用sysbench压测数据
七、备份与恢复测试
八、增量备份及恢复
一、需求背景
查询Percona官方手册,Xtrabackup 8.0可以备份MySQL 8.0以上。
二、环境准备
由于在中标麒麟ky10系统上直接编译报gcc等错误,所以需要在ARM下准备CentOS系统。
中标麒麟ky10的内核为4.19,而CentOS 7的内核为3.xx,CentOS 8的内核为4.18,故需要在CentOS 8的操作系统进行编译,编译完成后拿到中标麒麟ky10中使用。
2.1 检查系统架构及版本
Shell> cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
Shell> uname -srm
Linux 4.18.0-147.el8.aarch64 aarch64
2.2 下载源码包
web下载地址:
shell操作:
Shell> cd /root
Shell>wget https://github.com/percona/percona-xtrabackup/archive/refs/tags/percona-xtrabackup-8.0.25-17.tar.gz
2.3 配置CentOS 8的yum源
Shell> mkdir /etc/yum.repos.d/repo.bak
Shell> mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak/
//检查dns是否正常
Shell> ping baidu.com
//修改dns地址
Shell> vim /etc/resolv.conf
Shell> curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
Shell> sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
Shell> sed -i.bak -e 's|^mirrorlist=|#mirrorlist=|' -e 's|^#baseurl=|baseurl=|' -e 's|http://mirror.centos.org|https://mirrors.aliyun.com|' /etc/yum.repos.d/CentOS-*.repo
Shell> dnf makecache
Shell> dnf install lrzsz
三、安装编译依赖
Shell> dnf install cmake openssl-devel libaio libaio-devel automake autoconf bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl-devel zlib-devel vim-common libarchive git centos-release-stream gcc-toolset-10-gcc-c++
PS: 以上依赖都必须安装,否则CMake时会报依赖错误。
四、编译Percona Xtrabackup
Shell> tar xf percona-xtrabackup-percona-xtrabackup-8.0.25-17.tar.gz
Shell> mv percona-xtrabackup-percona-xtrabackup-8.0.25-17 xtrbackup-8.0.25
Shell> cd xtrbackup-8.0.25
Shell>cmake -DWITH_BOOST=./include/boost_1_73_0 -DDOWNLOAD_BOOST=ON -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF -DFORCE_INSOURCE_BUILD=1
Shell> echo $?
Shell> make -j4
Shell> echo $?
Shell> mkdir /usr/local/xtrbackup-8.0.25
Shell> make DESTDIR=/usr/local/xtrbackup-8.0.25 install
Shell> /usr/local/xtrbackup-8.0.25/usr/local
Shell> tar zcf arm_ky10_xtrabackup-8.0.25.tar.gz
五、在ARM下初始化安装MySQL
使用ARM下中标麒麟系统下的MySQL 8.0.25,并初始化。
PS:在ARM下中标麒麟系统编译MySQL 8.0.25请看之前文章。
5.1 初始化
Shell> chown -R mysql.mysql /usr/local/mysql/
Shell> mkdir /data/mysql/3306/{data,log,tmp,conf} -p
Shell> chown -R mysql.mysql /data1/mysql/
Shell> cd /data/mysql/3306/conf
Shell> vim my.cnf
Shell> /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3306/conf/my.cnf --initialize
5.2 配置文件
[client]
socket = /data/mysql/3306/mysql.sock
default-character-set=utf8
[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql/3306/data
port = 3306
#skip-grant-tables
socket = /data/mysql/3306/mysql.sock
user = mysql
character_set_server=utf8
lc-messages-dir=/usr/local/mysql/share/english
plugin_dir=/usr/local/mysql/lib/plugin
default_authentication_plugin = mysql_native_password
back_log = 5000
server-id = 1803306
log-bin = /data/mysql/3306/log/mysql-bin
binlog_format = row
log-error = /data/mysql/3306/log/error.log
enforce_gtid_consistency = 1
expire_logs_days=15
gtid_mode = on
innodb_buffer_pool_size = 200m
innodb_change_buffering = all
innodb_doublewrite = true
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 16M
innodb_log_file_size = 100m
innodb_log_files_in_group = 4
innodb_print_all_deadlocks = on
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:81920M
innodb_thread_concurrency = 0
interactive_timeout = 31536000
lock_wait_timeout = 600
log_bin_trust_function_creators = 1
log_timestamps = SYSTEM
long_query_time = 10
lower_case_table_names = 1
master_info_repository = TABLE
max_allowed_packet = 16M
max_connections = 20480
max_prepared_stmt_count = 1048576
net_read_timeout = 10000
net_write_timeout = 10000
open_files_limit = 80000
skip_external_locking = 1
skip_name_resolve = 1
sort_buffer_size = 2M
sync_binlog = 1
table_definition_cache = 5000
table_open_cache = 5000
thread_cache_size = 3000
tmpdir = /data/mysql/3306/tmp
transaction_isolation = READ-COMMITTED
wait_timeout = 31536000
5.3 启动MySQL
Shell> /usr/local/mysql/bin/mysqld --defaults-file=/data1/mysql/3306/conf/my.cnf &
六、登录并使用sysbench压测数据
登录修改密码:
Shell> cat /data1/mysql/3306/log/error.log |grep pass
A temporary password is generated for root@localhost: JFbdzuFta1*o
Shell> /usr/local/mysql/bin/mysql -uroot -p'JFbdzuFta1*o' -S /data1/mysql/3306/mysql.sock -P3306
mysql> alter user user() identified by ‘abc123’;
Mysql> flush privileges;
创建用户:
Shell> /usr/local/mysql/bin/mysql -uroot -p'abc123' -S /data1/mysql/3306/mysql.sock -P3306
mysql> create user pcms@'%' identified by 'pcms@123';
mysql> grant all privileges on *.* to pcms@'%';
mysql> flush privileges;
创建库并使用sysbench造数据:
mysql> create database pcms;
//使用sysbench造数
Shell> sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=172.16.130.180 --mysql-port=3306 --mysql-user='root' --mysql-password='abc123' --mysql-db='sbtest' --tables=10 --table-size=5000 --threads=200 prepar
//检查
MySQL [sbtest]> select count(*) from sbtest1;
七、备份与恢复测试
全量备份测试:
Shell> /usr/local/xtrabackup/bin/xtrabackup --defaults-file=/data/mysql/3306/conf/my.cnf --host=127.0.0.1 --user=root --password=abc123 --port=3306 --backup --target-dir=/root/backup/
输出信息:
Using server version 8.0.25
210624 22:08:39 Executing LOCK INSTANCE FOR BACKUP...
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /data/mysql/3306/data
xtrabackup: open files limit requested 80000, set to 1024000
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = .
xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 4
xtrabackup: innodb_log_file_size = 104857600
xtrabackup: using O_DIRECT
Number of pools: 1
xtrabackup: inititialize_service_handles suceeded
210624 22:08:39 Connecting to MySQL server host: 127.0.0.1, user: root, password: set, port: 3306, socket: /data/mysql/3306/mysql.sock
xtrabackup: Redo Log Archiving is not set up.
210624 22:08:39 >> log scanned up to (31673954)
xtrabackup: Generating a list of tablespaces
xtrabackup: Generating a list of tablespaces
Scanning './'
Completed space ID check of 2 files.
Allocated tablespace ID 2 for sbtest/sbtest8, old maximum was 0
210624 22:08:42 Backup created in directory '/root/backup/'
MySQL binlog position: filename 'mysql-bin.000005', position '196', GTID of the last change '4c2b3352-d4f3-11eb-8b55-52540061b4c4:1-47'
210624 22:08:42 [00] Writing /root/backup/backup-my.cnf
210624 22:08:42 [00]...done
210624 22:08:42 [00] Writing /root/backup/xtrabackup_info
210624 22:08:42 [00]...done
xtrabackup: Transaction log of lsn (31673954) to (31679741) was copied.
210624 22:08:43 completed OK!
全量恢复测试:
// 删掉库并将数据库关闭
Shell> mysql -uroot -p'abc123' -h'127.0.0.1'
MySQL [(none)]> drop database sbtest;
MySQL [(none)]> shutdown;
// 准备工作
Shell> /usr/local/xtrabackup/bin/xtrabackup --host=127.0.0.1 --user=root --password=abc123 --port=3306 --prepare --target-dir=/root/backup/
Shell> mv /data/mysql/3306/data/ /data/mysql/3306/data1
Shell> mkdir /data/mysql/3306/data
// 拷贝数据
Shell> /usr/local/xtrabackup/bin/xtrabackup --host=127.0.0.1 --user=root --password=abc123 --port=3306 --datadir=/data/mysql/3306/data --copy-back --target-dir=/root/backup/
输出信息:
210625 02:34:36 [01] Copying ./performance_schema/keyring_componen_191.sdi to /data/mysql/3306/data/performance_schema/keyring_componen_191.sdi
210625 02:34:36 [01]...done
210625 02:34:36 [01] Copying ./ib_buffer_pool to /data/mysql/3306/data/ib_buffer_pool
210625 02:34:36 [01]...done
210625 02:34:36 [01] Copying ./xtrabackup_info to /data/mysql/3306/data/xtrabackup_info
210625 02:34:36 [01]...done
210625 02:34:36 [01] Copying ./xtrabackup_master_key_id to /data/mysql/3306/data/xtrabackup_master_key_id
210625 02:34:36 [01]...done
210625 02:34:36 [01] Copying ./ibtmp1 to /data/mysql/3306/data/ibtmp1
210625 02:34:36 [01]...done
210625 02:34:37 [01] Creating directory ./#innodb_temp
210625 02:34:37 [01] ...done.
210625 02:34:37 completed OK!
// 修改目录属性启动数据库
Shell> chown -R mysql:mysql /data/mysql/3306/data
Shell> chmod -R 755 /data/mysql/3306/data
// 启动数据库
Shell> /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3306/conf/my.cnf &
// 检测
全量恢复完成:
MySQL> select count(*) from sbtest.sbtest1;
八、增量备份及恢复
略。
Enjoy GreatSQL :)
文章推荐:
扫码添加GreatSQL社区助手微信好友
发送“加群”加入GreatSQL/MGR交流群
亦可扫码加入GreatSQL/MGR交流QQ群
想看更多技术好文,点个“在看”吧!